# writer:sp
# tiem: 2024/8/28 9:14
'''typing 库是 Python 标准库的一部分，它提供了一套类型注解工具，用于增强代码的可读性和可维护性。
通过使用 typing 库，您可以为函数参数、返回值以及变量添加类型注解，这些注解可以帮助其他开发者更好地理解代码的意图，
并且可以被诸如类型检查器这样的工具用来检查代码中潜在的类型错误'''
from typing import List, Dict, Tuple, Optional,Union

def process_data(data: List[int]) -> int:
    return sum(data)

# 使用示例
data = [1, 2, 3, 4, 5]
result = process_data(data)
print("Sum:", result)

def get_user_details(user_id: int, name: str, age: Optional[int] = None) -> Dict[str, Union[str, int]]:
    return {"id": user_id, "name": name, "age": age}

def swap(x: int, y: int) -> Tuple[int, int]:
    return y, x

def get_user_id(user: dict) -> UserId:
    return user["id"]

# 定义 UserId 类型
UserId = NewType('UserId', int)

# 使用示例
data = [1, 2, 3, 4, 5]
result = process_data(data)
print("Sum:", result)

user = {"id": 1, "name": "Alice", "age": 30}
details = get_user_details(**user)
print("User Details:", details)

a, b = swap(10, 20)
print("Swapped values:", a, b)

user_id = get_user_id(user)
print("User ID:", user_id)
